package com.cnap.multiclouldmgmt.service;

import com.cnap.multiclouldmgmt.model.AlgScheduleInfoV2Model;
import com.cnap.multiclouldmgmt.model.alg.AccountNameReqModel;
import com.cnap.multiclouldmgmt.model.gpu.GpuClusterMonitorInfo;
import com.cnap.multiclouldmgmt.model.k8sMonitorModels.*;

import java.util.List;
import java.util.Map;

/**
 * @author dyq
 * 基础服务
 */
public interface AlgInfoService {

    /**
     *
     * @param algReqModel
     * @return
     * @throws Exception
     */
    List<NodeAlgInfoModel> getLoadBalaceDeployAlgInfo(AlgReqModel algReqModel) throws Exception;

    /**
     *
     * @param algReqModel
     * @return
     * @throws Exception
     */
    List<NodeAlgInfoModel> getLoadBalanceInvokeAlgInfo(AlgReqModel algReqModel) throws Exception;

    /**
     *
     * @param algReqModel
     * @return
     * @throws Exception
     */
    List<K8sClusterAlgInfoModel> getHpaAlgInfo(AlgReqModel algReqModel) throws Exception;

    /**
     *
     * @param algReqModel
     * @return
     * @throws Exception
     */
    List<K8sClusterCostAlgInfoModel> getCostAlgInfo(AlgReqModel algReqModel) throws Exception;

    /**
     *
     * @param algReqModel
     * @return
     * @throws Exception
     */
    List<DynamicExpansionSvcAlgModel> getDynamicExpansionAlgInfo(AlgReqModel algReqModel) throws Exception;

    /**
     *
     * @param algReqModel
     * @return
     * @throws Exception
     */
    List<AlgClusterInfoV2Model> getDeployAlgInfoV2(AlgReqModel algReqModel) throws Exception;

    /**
     *
     * @param algReqModel
     * @return
     * @throws Exception
     */
    List<AlgScheduleInfoV2Model> getScheduleAlgInfoV2(AlgReqModel algReqModel) throws Exception;

    /**
     * 获取gpuTop 5集群
     * @return
     */
    List<GpuClusterMonitorInfo> getTop5GpuClusterInfo();

    Map<String,Integer> getAccountNodeNum(List<AccountNameReqModel> accountNameReqModels);
}
